var numeroFilas = 0;
var filaSeleccionado = true;

function mostrarEnviarSolicitud(){
    if(document.getElementById('tblFormularioEnvio').style.visibility=='hidden'){
        document.getElementById('tblFormularioEnvio').style.visibility= 'visible';
        document.getElementById('tblFormularioEnvio').style.display='';
    }
}

function cancelarSolicitud(){
    document.getElementById('fechaInicioVacaciones').value=document.getElementById('fechaActual').value;
    document.getElementById('fechaFinVacaciones').value=document.getElementById('fechaActual').value;
    dias(document.getElementById('fechaActual').value, document.getElementById('fechaActual').value);

    if(document.getElementById('tblFormularioEnvio').style.visibility=='visible'){
        document.getElementById('tblFormularioEnvio').style.visibility= 'hidden';
        document.getElementById('tblFormularioEnvio').style.display='none';
    }
    
      
}
            
function enviarSolicitud(){
    
    if(validarEnviarSolicitud()){
        //if(confirm('\u00bfDesea enviar la solicitud?')){
        
        jConfirm('\u00bfDesea enviar la solicitud?', 'Sistema de Gesti\u00F3n de Vacaciones', function(r) {
            if(r){
            var fechaInicioVacaciones= $("#fechaInicioVacaciones").val();
            var fechaFinVacaciones=$("#fechaFinVacaciones").val();
            var diasHabiles=$("#txtDiasHabiles").val();
            var aprobador=$("#txtAprobador").val();
            var solicitante=$("#usuarioCreador").val();
            var fechaActual=$("#fechaActual").val();
            fnMensajeProcesoInicio('Procesando');
            $.post('./solicitud.do',
            {
                metodo:'enviarSolicitud',
                fechaInicioVacaciones:fechaInicioVacaciones,
                fechaFinVacaciones:fechaFinVacaciones,
                fechaActual:fechaActual,
                diasHabiles:diasHabiles,
                solicitante: solicitante,
                aprobador:aprobador
            },
            function(respuestaServer, textStatus){
                if(textStatus == 'success'){
                    numeroFilas = 0;
                    $("#result").text(100);
                    //alert(respuestaServer);
                    jAlert(respuestaServer, 'Sistema de Gesti\u00F3n de Vacaciones');
                    fnMensajeProcesoTerminado('');
                    buscarSolicitudesPendientes('./solicitud.do','');
                    document.formEnvio.reset();
                }
            });
           }
         });
        //}

    }
    
    

}


function anularSolicitud(elementoTabla){
    var rows = elementoTabla.tBodies[0].rows.length;

    var solicitante=$("#usuarioCreador").val();
    var fechaActual=$("#fechaActual").val();
    if(rows == 0){
//        alert('No hay registros disponibles');
        jAlert('No hay registros disponibles', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }

    if (check('tblSolicitudes')<1){
//        alert('Debe seleccionar un registro');
        jAlert('Debe seleccionar un registro', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }

    if (check('tblSolicitudes')>1){
//        alert('Solo se permite anular una solicitud, a la vez');
        jAlert('Solo se permite anular una solicitud, a la vez', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }

jConfirm('Se anular\xe1 la solicitud seleccionada. \u00bfDesea continuar?', 'Sistema de Gesti\u00F3n de Vacaciones', function(r) {
//    if(confirm('Se anular\xe1 la solicitud seleccionada. \u00bfDesea continuar?')){
        if(r){
        var arrayJSON = []
        var tableSol = document.getElementById('tblSolicitudes');
        var checsSol = tableSol.getElementsByTagName("input");


        for(var i = 0; i < rows; i++){

            if (checsSol[i].type == "checkbox"){
                if(checsSol[i].checked == true) {
                    var objJSON = {
                        idSolicitud:elementoTabla.tBodies[0].rows[i].getElementsByTagName('td')[1].firstChild.nodeValue,
                        fechaInicio:elementoTabla.tBodies[0].rows[i].getElementsByTagName('td')[2].firstChild.nodeValue,
                        fechaFin:elementoTabla.tBodies[0].rows[i].getElementsByTagName('td')[3].firstChild.nodeValue,
                        estado:elementoTabla.tBodies[0].rows[i].getElementsByTagName('td')[5].firstChild.nodeValue,
                        idUsuarioAprobador:elementoTabla.tBodies[0].rows[i].getElementsByTagName('td')[6].firstChild.nodeValue
                    };
                    arrayJSON.push(objJSON);
                }
            }

        }
        fnMensajeProcesoInicio('Procesando');
        $.post('./solicitud.do',
        {
            metodo:'anularSolicitud',
            solicitante:solicitante,
            fechaActual: fechaActual,
            procesados: JSON.stringify(arrayJSON)
        },
        function(respuestaServer, textStatus){
            if(textStatus == 'success'){
                numeroFilas = 0;
                $("#result").text(100);
//                alert(respuestaServer);
                jAlert(respuestaServer, 'Sistema de Gesti\u00F3n de Vacaciones');
                fnMensajeProcesoTerminado('');
                buscarSolicitudesPendientes('./solicitud.do','');
            }
        }
        );

        return true;
    }else{
        return false;
    }
 });    
}




function validarEnviarSolicitud(){
    if($("#fechaInicioVacaciones").val() == ''){
//        alert('Ingrese fecha de inicio');
        jAlert('Ingrese fecha de inicio', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaInicioVacaciones").focus();
        return false;
    }

    if($("#fechaFinVacaciones").val() == ''){
//        alert('Ingrese fecha final');
        jAlert('Ingrese fecha final', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaFinVacaciones").focus();
        return false;
    }

    if($("#txtDiasHabiles").val() == ''){
//        alert('D\xedas h\xe1biles requerido');
        jAlert('D\xedas h\xe1biles requerido', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#txtDiasHabiles").focus();
        return false;
    }

    if($("#txtDiasHabiles").val() == '00'){
//        alert('El rango elegido es considerado libre para el personal');
        jAlert('El rango elegido es considerado libre para el personal', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#txtDiasHabiles").focus();
        return false;
    }
    
    if($("#txtAprobador").val() == ''){
//        alert('Aprobador requerido');
        jAlert('Aprobador requerido', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#txtAprobador").focus();
        return false;
    }

    if($("#txtCorreoJefe").val() == ''){
//        alert('No se ha especificado el correo del Jefe inmediato, por favor verificar la base de datos');
        jAlert('No se ha especificado el correo del Jefe inmediato, por favor verificar la base de datos', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }
    
    var cadena1= $("#fechaInicioVacaciones").val()
    var cadena2= $("#fechaFinVacaciones").val()
    var fechaIn = new fecha(cadena1)
    var fechaFn = new fecha(cadena2)
    var miFecha1 = new Date( fechaIn.anio, fechaIn.mes-1, fechaIn.dia )
    var miFecha2 = new Date( fechaFn.anio, fechaFn.mes-1, fechaFn.dia )
    
    var dfechaIni = new Date( miFecha1.getFullYear(), miFecha1.getMonth(),(miFecha1.getDate()));
    var dfechaFin = new Date( miFecha2.getFullYear(), miFecha2.getMonth(),(miFecha2.getDate()));
    

    if(esFeriado(dfechaFin)||dfechaFin.getDay()==0||dfechaFin.getDay()==6){
//        alert('La fecha fin debe ser un d\xeda h\xe1bil de la semana');
        jAlert('La fecha fin debe ser un d\xeda h\xe1bil de la semana', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }
    
    if(esFeriado(dfechaIni)||dfechaIni.getDay()==0||dfechaIni.getDay()==6){
//        alert('La fecha inicio debe ser un d\xeda h\xe1bil de la semana');
        jAlert('La fecha inicio debe ser un d\xeda h\xe1bil de la semana', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }
    
    

    if (Date.parse($("#fechaInicioVacaciones").val())==Date.parse($("#fechaActual").val())){
//        alert('Una solicitud puede ser enviada hasta un d\xeda antes a la fecha inicial requerida.');
        jAlert('Una solicitud puede ser enviada hasta un d\xeda antes a la fecha inicial requerida.', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaInicioVacaciones").focus();
        return false;
    }
    
    if (Date.parse($("#fechaFinVacaciones").val())==Date.parse($("#fechaActual").val())){
//        alert('La fecha final no debe ser  igual a la fecha actual');
        jAlert('La fecha final no debe ser  igual a la fecha actual', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaFinVacaciones").focus();
        return false;
    }

    if (comparaFecha($("#fechaActual").val(),$("#fechaInicioVacaciones").val())){
//        alert('Una solicitud puede ser enviada hasta un d\xeda antes a la fecha inicial requerida.');
        jAlert('Una solicitud puede ser enviada hasta un d\xeda antes a la fecha inicial requerida.', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaFinVacaciones").focus();
        return false;
    }

    if (comparaFecha($("#fechaActual").val(),$("#fechaFinVacaciones").val())){
//        alert('La fecha final no debe ser  menor a la fecha actual');
        jAlert('La fecha final no debe ser  menor a la fecha actual', 'Sistema de Gesti\u00F3n de Vacaciones');
        $("#fechaFinVacaciones").focus();
        return false;
    }
    if (cantidadDias($("#fechaActual").val(),$("#fechaInicioVacaciones").val())<1){
//        alert('Solo se puede solicitar vacaciones hasta con 1 d\xeda de anticipaci\xf3n');
        jAlert('Solo se puede solicitar vacaciones hasta con 1 d\xeda de anticipaci\xf3n', 'Sistema de Gesti\u00F3n de Vacaciones');
        return false;
    }
    
  
    
    var rows = document.getElementById('tblSolicitudes').tBodies[0].rows.length;
    var diasAcumulados=0;
    if(rows>0){
        for(var i = 0; i < rows; i++ ){
            if (document.getElementById('tblSolicitudes').tBodies[0].rows[i].cells[2]!=undefined){
                var fechaInicio = document.getElementById('tblSolicitudes').tBodies[0].rows[i].cells[2].innerHTML;
                var fechaFin = document.getElementById('tblSolicitudes').tBodies[0].rows[i].cells[3].innerHTML;
                diasAcumulados += parseInt(document.getElementById('tblSolicitudes').tBodies[0].rows[i].cells[4].innerHTML);
                if($("#fechaInicioVacaciones").val() == fechaInicio){
//                    alert('La fecha inicial elegida ya fue considerada en una solicitud anterior. ');
                    jAlert('La fecha inicial elegida ya fue considerada en una solicitud anterior. ', 'Sistema de Gesti\u00F3n de Vacaciones');
                    return false;
                }

                if($("#fechaFinVacaciones").val() == fechaFin){
//                    alert('La fecha final elegida ya fue considerada en una solicitud anterior. ');
                    jAlert('La fecha final elegida ya fue considerada en una solicitud anterior. ', 'Sistema de Gesti\u00F3n de Vacaciones');
                    return false;
                }

                if($("#fechaInicioVacaciones").val() == fechaFin){
//                    alert('La fecha inicial elegida ya fue considerada en una solicitud anterior. ');
                    jAlert('La fecha inicial elegida ya fue considerada en una solicitud anterior. ', 'Sistema de Gesti\u00F3n de Vacaciones');
                    return false;
                }

                if($("#fechaFinVacaciones").val() == fechaInicio){
//                    alert('La fecha final elegida ya fue considerada en una solicitud anterior. ');
                    jAlert('La fecha final elegida ya fue considerada en una solicitud anterior. ', 'Sistema de Gesti\u00F3n de Vacaciones');
                    return false;
                }

                if (comparaFecha($("#fechaInicioVacaciones").val(),fechaInicio)&&comparaFecha(fechaFin,$("#fechaInicioVacaciones").val())){
//                    alert('Las fechas elegidas ya fueron consideradas en una solicitud anterior.');
                    jAlert('Las fechas elegidas ya fueron consideradas en una solicitud anterior.', 'Sistema de Gesti\u00F3n de Vacaciones');
                    $("#fechaInicioVacaciones").focus();
                    return false;
                }

                if (comparaFecha($("#fechaFinVacaciones").val(),fechaInicio)&&comparaFecha(fechaFin,$("#fechaFinVacaciones").val())){
//                    alert('Las fechas elegidas ya fueron consideradas en una solicitud anterior. ');
                    jAlert('Las fechas elegidas ya fueron consideradas en una solicitud anterior. ', 'Sistema de Gesti\u00F3n de Vacaciones');
                    $("#fechaFinVacaciones").focus();
                    return false;
                }

                if (comparaFecha(fechaInicio,$("#fechaInicioVacaciones").val())&&comparaFecha($("#fechaFinVacaciones").val(),fechaFin)){
//                    alert('Ya se ha enviado una solicitud que abarca parte de este rango de fechas');
                    jAlert('Ya se ha enviado una solicitud que abarca parte de este rango de fechas', 'Sistema de Gesti\u00F3n de Vacaciones');
                    $("#fechaFinVacaciones").focus();
                    return false;
                }
            }
        }
        var nuevoSaldo = parseInt($("#saldoVacaciones").val())-parseInt(diasAcumulados);

        if ($("#txtDiasHabiles").val()>nuevoSaldo){
//            alert('La cantidad de d\xedas de vacaciones solicitada supera su saldo disponible');
            jAlert('La cantidad de d\xedas de vacaciones solicitada supera su saldo disponible', 'Sistema de Gesti\u00F3n de Vacaciones');
            return false;
        }

    }else{
        if ($("#txtDiasHabiles").val()>$("#saldoVacaciones").val()){
//            alert('La cantidad de d\xedas de vacaciones solicitada supera su saldo disponible');
            jAlert('La cantidad de d\xedas de vacaciones solicitada supera su saldo disponible', 'Sistema de Gesti\u00F3n de Vacaciones');
            return false;
        }
    }



    return true;
}



function buscarSolicitudesPendientes(urlHtml, accion){
    $("#tblSolicitudes tbody").children("tr").remove();
    if(accion=='refresh'){
        fnMensajeProcesoInicio('Actualizando');
    }

    $.ajax({
        url:urlHtml,
        data: {
            metodo:'cargarSolicitudesPorUsuario',
            idUsuarioSolicitante: $("#usuarioCreador").val(),
            fechaActual: $("#fechaActual").val()
        } ,
        dataType: 'json',
        cache: false,
        success:function(respuestaServerJSON) {
            if(respuestaServerJSON.resultadoDetalle!=undefined){
                var tamanio = respuestaServerJSON.resultadoDetalle.length;
                for(var i=0; i<tamanio; i++) {
                    cargarSolicitudesList("tblSolicitudes",respuestaServerJSON.resultadoDetalle[i]);
                }
            }else{
                var fila = '<tr>';
                fila+='<td colspan=6 class="label">No tiene solicitudes pendientes</td>';
                fila+='</tr>';
                $("#tblSolicitudes > tbody").append(fila);
            }
            if(accion=='refresh'){
                fnMensajeProcesoTerminado('');    
            }

        }

    });
}

function cargarSolicitudesList(idElementoTabla,objJSON){
    var estado="";
    var fila = '<tr>';
    if(numeroFilas % 2 == 0){
        fila = '<tr class="even">';
    }else{
        fila = '<tr class="odd">';
    }
    if(objJSON.estado=='R'){
        fila +='<td><input disabled=true type="checkbox" name="selectSolicitud" onclick="singleSelectSolicitud(this)"></input></td>';
    }else{
        fila +='<td><input type="checkbox" name="selectSolicitud" onclick="singleSelectSolicitud(this)"></input></td>';
    }
   
    fila +='<td style="display:none;">'+objJSON.idSolicitud+'</td>';
    fila +='<td>'+objJSON.fechaInicio+'</td>';
    fila +='<td>'+objJSON.fechaFin+'</td>';
    fila +='<td>'+objJSON.diasHabiles+'</td>';
    if(objJSON.estado=='P'){
        estado='Por aprobar';
    }else if(objJSON.estado=='A'){
        estado='Aprobado';
    }else if(objJSON.estado=='R'){
        estado='Rechazada';
    }
    else{
        estado='Anulado'
    }
    fila +='<td>'+estado +'</td>';
    fila +='<td style="display:none;">'+objJSON.usuarioAprobador+'</td>';
    fila +='<td>'+objJSON.nombreAprobador+' '+objJSON.apellidoAprobador+'</td>';
    fila +='</tr>';

    $("#" + idElementoTabla + " > tbody").append(fila);

    numeroFilas += 1;
}

function check(idElementoTabla)
{
    var cont=0;
    var table = document.getElementById(idElementoTabla);
    var checs = table.getElementsByTagName("input");
    for(i = 0; i < checs.length; i++ ){
        if (checs[i].type == "checkbox"){
            if(checs[i].checked == true) {
                cont++;
            }
        }
    }
    return cont;
}

function singleSelectSolicitud(current)
{
    if(document.getElementById('tblSolicitudes').tBodies[0].rows.length>1){
        var table = document.getElementById('tblSolicitudes');
        var checs = table.getElementsByTagName("input");
        for(i = 0; i < checs.length; i++ ){
            if (checs[i].type == "checkbox"){
                if(checs[i] != current) {
                    checs[i].checked=false;
                }
            }
        }
        current.checked = true;
    }



}





